package com.gukun.springboot.tdengine.service;

import org.springframework.stereotype.Service;

/**
 * 使用原生JDBC进行数据处理
 * 在插入等功能上，减少sql损耗
 */
@Service
public class TDEngineHelper {

//    private static final String TAGTABLE = "tagtable";
//    @Value("${tdengine.url:jdbc:TAOS://127.0.0.1:6030?user=root&password=taosdata}")
//    private String url = "";
//
//    @Value("${tdengine.db:syncdb}")
//    private String dbName = "";
//
//
//    private static final Logger logger = LoggerFactory.getLogger(TDEngineHelper.class);
//
//    public String getDbName() {
//        return dbName;
//    }
//
//    public void setDbName(String dbName) {
//        this.dbName = dbName;
//    }
//
//
//    @Autowired
//    private TDEngineDao tdEngineDao;
//
//
//    public void dropDatabase() {
//        try {
//            tdEngineDao.dropDatabase();
//        } catch (SQLException e) {
//            throw new RuntimeException(e);
//        }
//    }
//
//    public void createDatabase() {
//        try {
//            tdEngineDao.createDatabase();
//        } catch (SQLException e) {
//            throw new RuntimeException(e);
//        }
//    }
//
//
//    public List<TagData> getReal() {
//        String sql = "select last_row(*),tagName from syncdb_guk.tag0  group by tagName";
//        try {
//            tdEngineDao.executeSQL(sql);
//        } catch (SQLException e) {
//            throw new RuntimeException(e);
//        }
//
//        return new ArrayList<>();
//    }
//
//    public void dropTable(String tbName) {
//        final String sql = "drop table if exists " + dbName + "." + tbName;
//        try {
//            tdEngineDao.executeSQL(sql);
//        } catch (SQLException e) {
//            throw new RuntimeException(e);
//        }
//    }
//
//    /**
//     * 这边建立4个表，存储double型，float型，bool型，int型
//     */
//    public void createSupTable() {
//        try {
//            tdEngineDao.useDb(dbName);
//            for (TagType type : TagType.values()) {
//                String sql = " create table if not exists " + getSTableName(type) + "(ts timestamp,val " + type + ", quality tinyint) tags(tagName varchar(128))";
//                tdEngineDao.executeSQL(sql);
//            }
//        } catch (SQLException e) {
//            throw new RuntimeException(e);
//        }
//    }
//
//
//    /**
//     * 获取超表名称
//     *
//     * @param type
//     * @return
//     */
//    private String getSTableName(TagType type) {
//        String stag = "";
//        switch (type) {
//            case DOUBLE:
//            case BOOL:
//            case INT:
//            case FLOAT:
//                stag = dbName + ".t" + type.name().toLowerCase();
//                break;
//        }
//        return stag;
//    }
//
//    /**
//     * 批量建表（点）
//     *
//     * @param tagInfos
//     * @throws Exception
//     */
//    public void createBatchTable(List<TagInfo> tagInfos) throws Exception {
////        if (tagInfos.size() > 5000) {
////            throw new Exception("无法批量插入大于5000个表,请分批插入。");
////        }
//        int batchSize = 2500;
//        int group = tagInfos.size() / batchSize;
//        for (int i = 0; i < group; i++) {
//            StringBuilder sql = new StringBuilder("create table ");
//            for (int j = 0; j < batchSize; j++) {
//                int index = i * batchSize + j;
//                TagInfo tagInfo = tagInfos.get(index);
//                String tbName = tagInfo.getTagName();
//                String sTableName = getSTableName(tagInfo.getTagType());
//                sql.append("if not exists ")
//                        .append(dbName).append(".")
//                        .append(tbName).append(" using ")
//                        .append(sTableName).append(" tags('")
//                        .append(tagInfo.getTagName()).append("') ");
////                sql += "if not exists " + dbName + "." + tbName + "(ts timestamp,val "+tagInfo.getTagType()+",quality tinyint)";
//            }
//            try {
//                tdEngineDao.executeSQL(sql.toString());
//            } catch (SQLException e) {
//                throw new RuntimeException(e);
//            }
//        }
//
//        //查看是否还有余孽
//        if (batchSize * group < tagInfos.size()) {
//            StringBuilder sql = new StringBuilder("create table ");
//            //最后一堆
//            for (int i = batchSize * group; i < tagInfos.size(); i++) {
//                int index = batchSize * group + i;
//                TagInfo tagInfo = tagInfos.get(index);
//                String tbName = tagInfo.getTagName();
//                String sTableName = getSTableName(tagInfo.getTagType());
//                sql.append("if not exists ")
//                        .append(dbName).append(".")
//                        .append(tbName).append(" using ")
//                        .append(sTableName).append(" tags('")
//                        .append(tagInfo.getTagName()).append("') ");
////                sql += "if not exists " + dbName + "." + tbName + "(ts timestamp,val "+tagInfo.getTagType()+",quality tinyint)";
//            }
//            try {
//                tdEngineDao.executeSQL(sql.toString());
//            } catch (SQLException e) {
//                throw new RuntimeException(e);
//            }
//        }
//
//    }
//
//
//
//    private  void excuteSql(Map<String, String> tagDataMap, Long ts) throws SQLException {
//        tdEngineDao.useDb(dbName);
////        tdEngineDao.excuteInsert(tagDataMap,ts);
//        // 执行其他操作
//    }


}
